
#include "DiscPlanning.h"

int16_t leerConfig(char *arch, Parametros*parametros)
{
	char *ptr, cadena[80+1], campo[80+1];
	FILE *fd;

	if ((fd = fopen(arch, "r")) == NULL)
	{
		return 0;
	}

	while (fgets(cadena, 80+1, fd) != NULL) {

		if (cadena[0] != '#' && cadena[0] != '\n')
		{
			cadena[strlen(cadena)-1] = '\0';
			ptr = strtok (cadena, ":" );
			while ( ptr != NULL )
			{
				strcpy(campo,ptr);
				ptr = strtok (NULL,":");
				if ( ptr == NULL )
				{
					return 0;
				}

				if (cargarParametros(parametros, ptr, campo) == 1)
					return 0;

				ptr = strtok ( NULL, ":\0" );
			}
		}
	}

	fclose(fd);
   return 1;
}


/******************************************************************************
* FUNCION: cargarParametros()																	*
* DESCRIP: 	-Verifica el valor del parametro en el archivo de configuracion	*
*				-Inicializa la estructura de parametros									*
* DEVUELVE: Si no carga el parametro 1, si lo carga 0									*
******************************************************************************/

int16_t cargarParametros(Parametros* parametros, char *dato, char *campo)
{
	struct in_addr ftp_addr;


	if (strcmp(campo, "IP") == 0) {

      /* Guarda la IP en la estructura ... */
		if(strcmp(dato,"INADDR_ANY") == 0)
			parametros->IP.s_addr=htonl(INADDR_ANY);
		else {
			if(!inet_aton(dato,(struct in_addr *)&ftp_addr)) {
				printf("Error en IP de Habitacion!\n");
				return 1;
			}
		}

		parametros->IP.s_addr=ftp_addr.s_addr;
		return 0;
	}

	if (strcmp(campo,"Puerto") == 0) {

		parametros->port = htons(atoi(dato));
		return 0;
	}

	if (strcmp(campo,"PathSocketUnix") == 0) {

		parametros->pathSocketUnix=(char*)malloc(strlen(dato)+1);
		strcpy(parametros->pathSocketUnix,dato);
		return 0;
		}

	if (strcmp(campo,"Log") == 0) {

			parametros->log = atoi(dato);
			return 0;
		}

	if (strcmp(campo,"SectoresporPista") == 0) {

				parametros->diskSectors = atoi(dato);
				return 0;
			}

	if (strcmp(campo,"CantidadCilindros") == 0) {

				parametros->diskCylinders = atoi(dato);
				return 0;
			}


	if (strcmp(campo,"CilindroActual") == 0) {

					parametros->posinicial.cylinder = atoi(dato);
					return 0;
				}

	if (strcmp(campo,"SectorActual") == 0) {

						parametros->posinicial.sector = atoi(dato);
						return 0;
					}

	if (strcmp(campo,"TiempoLectura") == 0) {

					parametros->readTime = atoi(dato);
					return 0;
				}

	if (strcmp(campo,"TiempoEscritura") == 0) {

						parametros->writeTime = atoi(dato);
						return 0;
					}

	if (strcmp(campo,"RPM") == 0) {

							parametros->RPM = atoi(dato);
							return 0;
						}

	if (strcmp(campo,"TiempoSalto") == 0) {

								parametros->seekTime = atoi(dato);
								return 0;
							}



	if (strcmp(campo,"Algoritmo") == 0) {

		parametros->algoritmo=(char*)malloc(strlen(dato)+1);
		strcpy(parametros->algoritmo,dato);
		return 0;
	}

	if (strcmp(campo, "ModoInicio") == 0) {

			parametros->modoInicio=(char*)malloc(strlen(dato)+1);
			strcpy(parametros->modoInicio,dato);
			return 0;
		}






	if (strcmp(campo, "Identificador") == 0) {

		parametros->IDdisk=atoi(dato);
		return 0;
   }


return 0;

	/* Si llega hasta aca hay algun error ...
	printf("Parametro Desconocido...\nVerifique su archivo de Configuracion\n");
   return 1;*/
}

